Bit rate control for motion compensated video compression system

ABSTRACT

A portion of the number of bits initially allocated for encoding some of the frames of a group of pictures (GOP) is accumulated in a bit bank and is subsequently used to encode other frames that may require a larger number of bits to encode than those initially allocated for these frames. Furthermore, when a scene change P frame is detected in a first GOP, a second GOP is formed. The second GOP includes the scene change P frame as well as the remaining unencoded frames of the original GOP. The P frame of the first GOP is changed to an I frame in the second GOP. Furthermore, the frame to be displayed after the I frame of the second GOP is also changed to a duplicate of the I frame of the second GOP.

BACKGROUND OF THE INVENTION

[0001] The present invention relates to processing of video data, and more particularly to control of bit rates in encoding video data

[0002] Controlling the bit rate for encoding of video data is important and affects the quality of the video data. An effective bit rate control technique (alternatively referred to hereinbelow as rate control) allocates more bits for encoding more complex regions of a video frame. For a discrete cosine transform (DCT) based system, the bit rate control typically adjusts the quantization scale of the DCT coefficients to regulate the bit rate. When a lower rate is desired, the quantization scale is increased. Conversely, when a higher rate is desired, the quantization scale is decreased.

[0003] A well-known rate control algorithm called Test Model 5 (TM5) has been developed in connection with the MPEG-2 standard (Test Model Editing Committee: “Test Model 5”; ISO/IEC JTC/SC29/WG11/N400, April 1993). The TM5 algorithm maintains a constant bit rate for each group of pictures (GOP). A GOP often includes three types of frames, namely I, P and B frames.

[0004] Bit rate control in the TM-5 Standard involves three steps. During the first step, commonly referred to as frame level rate control step, the number of bits available to code the next frame is estimated. During the second step, commonly referred to as macro block level rate control step, the reference value of the quantization parameter for each macro block is set by means of a virtual buffer. During the third step, commonly referred to as the adaptive quantization step, the reference value of the quantization parameter set during the second step modified in accordance with the spatial activity measurement of the macro block. The modified reference value of the quantization parameter is subsequently used in the quantization process. A more detailed description of each of the above three steps follows.

[0005] Frame Level Rate Control

[0006] Frame level rate control is adapted to allocate bits among frames according to their complexity. In accordance with the frame level rate control, more bits are used to encode more complex frames while at the same time the average number of bits per second is maintained close to a given bit rate. Assume that bit_rate and picture_rate respectively represent the bit rate in bits/sec and the frame rate in frames/sec for encoding a video sequence. For simplicity, bit allocation is performed for a GOP. Assume fuller that there are N pictures in the GOP, i.e., the period of I frames in the video sequence equals to N. The total number of bits for encoding this GOP is equal to the product of N and the average number of bits used for encoding each frame.

[0007] In accordance with the frame level rate control, these total number of bits is distributed among the frames of the GOP such that all the bits are consumed for encoding of the GOP. For simplicity, this distribution is adaptively adjusted after encoding a frame. More specifically, after a frame is encoded, a target number of bits for encoding the next frame of the same frame type is determined by taking into account the complexity of the last encoded frame and using the remaining unused bits.

[0008] Complexity Estimation

[0009] Assume X_(i), X_(p), and X_(b) represent global complexity measurement for I, P and B frame types respectively. After a frame is encoded, the corresponding global complexity measurements are computed as shown below:

X _(i) =S _(i) ×avg_Q_(i)

X _(p) =S _(p) ×avg _(—) Q _(p)

X ₆ =S _(b) ×avg _(—) Q _(b)  (1.1)

[0010] where S_(i), S_(p) or S_(b) respectively represent the number of bits generated for encoding of 1, P and B frames that were last encoded. The average quantization parameters avg_Q_(i), avg_Q_(p) and avg_Q_(b) are the average of the quantization parameter QP for all the macro blocks (rounded to an integer) used during encoding the I, P or B frames respectively—this average also includes the quantization parameter for skipped macro blocks. The initial values of X_(i), X_(p), and X_(b) are set as follows.

X _(i)=(160×bit_rate)/115+0.5

X _(p)=(60×bit_rate)/115+0.5

X _(b)=(42×bit_rate)/115+0.5  (1.2)

[0011] Target Number of Bits

[0012] In the TM5 standard, the target number of bits for the next I, P or B frame of a GOP, respectively represented as T_(itm5), T_(ptm5), or T_(btm) are computed as shown below:

T _(itm5)=max {R/(1+N _(p) ×X _(p)/(K _(p) ×X _(i))+N _(b) ×X _(i)))+0 5, Tmin}

T _(ptm5)=max {R/(N _(p) +N _(b) ×K _(p) ×X _(b)/(K _(b) ×X _(p)))+05, Tmin}

T _(btm5)=max {R/(N _(b) +N _(p) ×K _(b) ×X _(p)/(K _(p) ×X _(h)))+0 5, Tmin}  (1.3)

[0013] Variables N_(p) and N_(b) are respectively the number of P and B frames of a current GOP that are yet to be encoded (hereinafter alternatively referred to as the remaining frames). The minimum target number of bits T_(min) is defined as:

T _(min)=bit_rate/(8×picture_rate)+0 5  (1.4)

[0014] where K_(p) and K_(b) are universal constants and depend on quantization matrices. For the matrices specified in MPEG-4, K_(p)=1.0 and K_(b)=1.4. R is the remaining number of bits assigned to the GOP and is updated after a frame is encoded in accordance with the following expression:

R=R−S _(i,p,h)  (1.5)

[0015] In the above expression (1.5), S_(i,p,b) is the number of bits used to encode the last frame (hereinafter referred to alternatively as the just encoded frame). Furthermore, the R on the left side is the number of bits remaining immediately after the last frame is encoded, and the R on the right is the number of bits remaining immediately before the last frame is encoded. R is set to 0 at the beginning of a new video sequence. However, prior to encoding the first frame, i.e., the I-frame of a new GOP, R is set to the following value:

R=R+bit_rate×N/picture_rate+0.5  (1.6)

[0016] Macro Block Level Rate Control

[0017] During the macro block level rate control step, the reference value of the quantization parameter for each macro block is determined by means of a virtual buffer-. The TM5 uses virtual buffer parameters d_(i), d_(p), and d_(b) for the corresponding frame types to regulate bit rates. Upon allocation of the target bit rate t_(i), t_(p), and t_(b), for each frame, the virtual buffer capacity is updated for each macro block. Next, a quantization parameter for the macro block is computed. In the TM5, the quantization parameter can be modified according to an activity measure of the macro block to achieve better picture quality. Consequently, the TM5 standard uses the quantization parameter directly to control the bit rate. This quantization parameter is derived from the bit rate allocated to each corresponding frame. Thus, changing the target frame rate will impact the quantization parameter and consequently manifest itself in a picture quality variation.

[0018] Virtual Buffers

[0019] For each I, P or B frame, the rate control in the macro block level is achieved by changing a quantization parameter and according to the fullness of a corresponding virtual buffer. Assume Q_(j) is the reference quantization parameter of the j-th macro block, and d_(j) is a measure of the fullness of the virtual buffer. The reference quantization parameter is computed as shown below:

Q _(j) =d _(j)×(31/r)  (2.1)

[0020] Note that Q_(j) is further modified according to the macro block activity—described further below—before it is applied to quantization. In the above equation (2.1) r is a reaction parameter defined by:

r=2×bit_rate/picture_rate  (2.2)

[0021] Assume d^(i) _(j), d^(p) _(j) and d^(b) _(j) respectively represent the buffer fullness for each of frame types I, P and B respectively. Assume further that MB_cnt represents the number of macro blocks in a frame. Consequently, before encoding the j-th macro block (j is greater than or equal to zero), the corresponding buffer fullness parameters are calculated as shown below:

d ^(i) _(j) =d ^(i) ₀ +B _(j−1) −j×TM _(i)

d ^(p) _(j) =d ^(p) ₀ +B _(j−1) −j×TM _(p)

d ^(b) _(j) =d ^(b) ₀ +B _(j−1) −j×TM _(b)  (2.3)

[0022] In equations (2.3), B_(j) is the number of bits used in encoding all the macro blocks in the frame up to the j-th macro block, and B⁻¹ is set to 0. If the values of d^(i) _(j), d^(p) _(j), or d^(b) _(j) in the equation (2.3) are negative, they are set to zero.

[0023] In the TM₅, the target number of bits per macro block TM_(i), TM_(p), and TM_(b) is defined as:

TM _(i) =T _(i) /MB_cnt

TM _(p) =T _(p) /MB_cnt

TM _(b) =T _(b) /MB_cnt  (2.4)

[0024] Furthermore, in equations (2.3), d^(i) ₀, d^(p) _(j) and d^(b) ₀ represent the initial buffer fullness for each of I, P and B frame types respectively. The default values of d^(i) ₀, d^(p) ₀, and d^(b) ₀ are:

d ^(i) ₀=15×r/31

d ^(p) ₀ =K _(p) ×d ^(i) ₀

d ^(b) ₀ =K _(b) ×d ^(i) ₀  (2.5)

[0025] At the beginning of encoding a video sequence, the initial buffer fullness parameters are set to their corresponding default values in accordance with their frame types. After encoding the last macro block of a frame, the default values are updated as shown below:

d ^(i, p b) ₀ =d ^(i, p, b) ₀ +S _(i, p, b) −T _(i, p, b)  (2.6)

[0026] where S_(i,p,b) is the total number of bits used in encoding of the frame, T_(i,p,b) is the target number of bits for the corresponding frame type (see equations (2.3)). The updated initial buffer fullness values are used to encode the next frame of the same frame type. If d^(i,p,b) ₀ as determined by expression (2.6) yields a negative value, the default initial values as shown in expressions (2.5) are used.

[0027] Adaptive Quantization

[0028] During the adaptive quantization step, the reference value of the quantization parameter set during the macro level rate control step is modified in accordance with the level of the activity of the macro blocks. Assume act_(j) is the measure of spatial activity for the j-th macro block of a frame. As seen below, act_(j) is calculated from four luminance frame-organized sub-blocks (n=1.4), and four luminance field-organized sub-blocks (n=5.) using the original intra pixel values:

act _(j)=1+min{vblk ₁ , vblk ₂ , . . . , vblk ₈}  (3.1)

[0029] where the approximated variance is defined as:

vblk _(n)=(1/64)×Σ⁶⁴ _(k=1) |P ^(n) _(k) −P_mean_(n|)  (3.2)

[0030] and where:

P_mean_(n)=(1/64)×Σ⁶⁴ _(k=1) P ^(n) _(k)  (3.3)

[0031] In equation (3.3), P^(n) _(k) is the intensity value of the k-th pixel in the n-th 8×8 block.

[0032] Assume avg_act is the average value of act_(j) for all macro blocks in the just encoded frame. For the first frame, variable avg_act is typically set to 400. The normalized activity measure is defined as:

N _(—) act _(j)=(2×act_(i) +avg _(—) act)/(act _(j)+2×avg_act)  (3.4)

[0033] The quantization parameter for the j^(th) macro block mquant_(j) is obtained by multiplying the reference quantization parameter Q_(j) with the normalized activity measure N_act_(j), as shown below:

mquant _(j) =Q _(i) ×N _(—) act _(i)+0.5  (3.5)

[0034] The value of mquant_(j) is maintained between 1 through 31, as known in the art.

[0035] While the TM5 algorithm works reasonably well in general, it does not offer any special treatment for the case of a scene change, in which the bit rate required for the frame is larger than the allocated bit rate. First, the predictive coding mode might not be suitable for the scene changed frame since the motion-compensated frame differences can consume more bits than the original frame.

[0036] U.S. Pat. No. 5,032,905, entitled “Accurate Detection of a Drastic Change between Successive Pictures”, suggests an intra-mode for the scene change frame. Whether this scene change frame is coded in inter-mode or intra-mode, it will consume many more bits than a typical predictive frame. However, the normal TM5 algorithm cannot afford this bit rate budget because the target bit rate allocated to a P-frame is much less than that allocated to an I-frame. With such a the bit rate constraint, the picture quality of this scene change P-frame will suffer badly. Consequently, all remaining frame in the GOP will be subject to poor quality. If the scene change occurs in the early portion of a GOP, the quality degradation will be very noticeable.

[0037] U.S. Pat. No. 5,617,150, entitled “Video Bit Rate Control Method,” describes a method that attempts to alleviate the problem by “borrowing” bits from previous frames for a scene change P-frame. The encoding is performed in a delayed fashion. The target bit rate assigned to a current sub-GOP (an I-frame or a P-frame and its preceding B-frames) is delayed until the scene change detection for the following sub-GOP is completed. If a scene change is detected in the following sub-GOP, the target bit rate for the current sub-GOP is reduced so that more bits can be used for the scene changed frame. Otherwise, the target bit rate for the current sub-GOP is not modified. The “borrowing” of bits is limited to the sub-GOP immediately preceding the current sub-GOP, and the amount that can be borrowed is very limited. Also, the amount of quality improvement is also thus limited. Furthermore, this method introduces an additional delay that is proportional to the number of frames in a sub-GOP.

[0038] Thus, there is a need for an improved method of encoding a sequence of video frames that is adapted to reduce picture quality degradation when the bit rate allocated for encoding of the sequence of frames falls below a predicted value.

SUMMARY OF THE INVENTION

[0039] In accordance with one aspect of the present invention, a portion of the number of bits initially allocated for encoding some of the frames of a video sequence is set aside in a bit bank and thus is not used to encode these frames. The bits so accumulated in the bit bank are subsequently used to encode, for example, a frame that includes a scene change and thus may require a larger number of bits to encode than that initially allocated for that frame. In one embodiment, the number of bits accumulated in the bit bank for each of the I, P and B frames is defined by one or more threshold values that are programmable and are adapted to change dynamically.

[0040] In accordance with another aspect of the present invention, some or all of the bits accumulated in the bit bank as well as any remaining allocated bits are used to encode the remaining frames of the GOP. Furthermore, when a scene change P frame is detected, a new GOP is formed. The new GOP includes the scene change P frame of the original GOP and the remaining unencoded frames of the original GOP. The P frame of the original GOP is changed to an I frame in the new GOP. In the new GOP, the frame to be displayed after the I frame is also changed to a duplicate of the P frame of the original GOP and is encoded as a P frame, thereby enabling all macro blocks of this duplicate frame to be encoded in the skipped mode.

[0041] In accordance with yet another aspect of the present invention, an upper and a lower limit is set for the target bit rates associated with each of the I, P and B frames to improve efficiency. Moreover, the reaction parameter as defined in the TM₅ standard, is adapted to depend on the frame resolution. Accordingly, the reaction parameter increases or decreases depending on the relationship between the bit rate and the resolution of the frame.

[0042] In accordance with another aspect of the present invention, to improve video quality a non-negative lower limit is set for each of the initial buffer fullness parameters. Furthermore, to reduce motion artifacts, the summed absolute difference calculated in connection with the motion estimation of a macro block is used to adjust the value of the quantization parameter for the P and B frames of a GOP.

[0043] These and other embodiments of the present invention achieve their purposes and benefits in the context of known circuit and process technology and known techniques in the electronic and process arts. Other features and advantages of the present invention will become apparent upon consideration of the following detailed description, accompanying drawings, and appended claims.

BRIEF DESCRIPTION OF THE DRAWINGS

[0044]FIGS. 1A and 1B respectively show frames of a GOP before and after detection of a scene change, in accordance with one aspect of the present invention.

[0045]FIG. 2A shows frames of a GOP after detection of a scene change but prior to formation of a second duplicate frame.

[0046]FIG. 2B shows the frames of the GOP of FIG. 2A after the formation of the second duplicate frame.

DETAILED DESCRIPTION OF THE INVENTION

[0047] In accordance with one aspect of the present invention, a portion of the bit rate targeted for encoding of a current frame is set aside for encoding of a future frame for which the targeted bit rate may not be sufficient. This may occur when the future frame includes, for example, a scene change. In accordance with another aspect of the present invention, when a scene change P frame is detected, a new GOP is formed. The new GOP includes the scene change P frame of the original GOP and the remaining unencoded frames of the original GOP. The P frame of the original GOP is changed to an I frame in the new GOP. In the new GOP, the frame to be displayed after the I frame is also changed to a duplicate of the scene change P frame of the original GOP and is encoded as a P frame, thereby enabling all macro blocks of this duplicate frame to be encoded in the skipped mode. The target bit rate for the new GOP is dependent on the overall target bit rate and the number of frames forming the new GOP. In accordance with yet another aspect of the present invention, improved global complexity measures are provided to enhance frame level rate control.

[0048] Bit Bank

[0049] In accordance with one aspect of the present invention, a portion of the bits targeted for encoding of a frame that does not include a scene change is set aside (i.e., accumulated) in a bit bank and thus is not used in encoding that frame. The accumulation of bits in the bit bank continues until a programmable threshold limit is reached The bits so accumulated in the bit bank are thereafter used to encode a future frame when the number of bits initially targeted for encoding the future frame may yield inadequate video quality. For example, when a scene change occurs, some of the accumulated bits are added to the targeted bits to encode the scene change frame of a GOP. The bits accumulated in the bit bank are also used to encode the remaining unencoded frames of the GOP in which the scene change frame is disposed.

[0050] In the following it is understood that variables SavedBits and BankLimit respectively represent the number of accumulated bits in the bit bank and the threshold limit above which bits are no longer accumulated. For a GOP, variable BankLimit is defined as:

BankLimit=3×ux×frame_rate/4  (4.1)

[0051] where ux is the minimal bits size unit and is described further below. Therefore, in accordance with one embodiment the present invention, the target number of bits T_(i), T_(p) and T_(b) for encoding each of I, P or B frame is as follows: if (SavedBits < BankLimit) { T_(i) = T_(itm5) × 0.9, T_(p) = T_(ptm5) × 0.95, or T_(b) = T_(btm5) × 0.98; } (4.2) else{ T_(i) = T_(itm5), T_(p) = T_(ptm5), or T_(b) = T_(btm5); }

[0052] where T_(itm5), T_(ptm5) and T_(btm5) are the target number of bits for encoding each of I, P and B frames in conformity with the TM₅ standard (see equations (1.3)). Accordingly, in this embodiment, 90% of the bits targeted for encoding an I frame is used to encode the I frame and the remaining 10% of the bits are accumulated in the bit bank. Similarly, 95% of the bits targeted for encoding a P frame is used to encode the P frame and the remaining 5% of the bits are accumulated in the bit bank. In a similar manner, 98% of the bits targeted for encoding a B frame is used to encode the B frame and the remaining 2% of the bits are accumulated in the bit bank.

[0053] After a frame is encoded, variable SavedBits is updated as shown below:

delta=T _(itm5,ptm5,btm5) −S _(i,p,b);  (4.3)

SavedBits+=delta;  (4.4)

[0054] where delta represents the number of bits accumulated in the bit bank in connection with the last encoded frame. In other words, delta is the number of bits that are allocated but are not used in encoding the last frame.

[0055] After a frame is encoded, the remaining number of bits R targeted for encoding the remaining frames of a GOP is determined as shown below: if(SavedBits<BankLimit) R = R − T_(itm5,ptm5,btm5) else R = R − S_(i,p,b); if ( R < T_(min)) { (4.5) if(R > 0) SavedBits += R, R= (2 ×N_(p) + N_(b)) × ux; SavedBits −=R; }

[0056] A negative variable SavedBits indicates that future bits are to be borrowed to encode the remaining frames of the GOP. After all the frames of a GOP are encoded, any remaining bits R are added to the SavedBits if the SavedBits is below the BankLimit, as shown below: If(SavedBits<BankLimit){ SavedBits+=R, R = 0; } R = R + bit_rate × N/picture_rate +0.5 (4.6)

[0057] The bit bank also operates across GOP boundaries. In other words, bits accumulated in the bit bank after encoding a first GOP may be used to encode subsequent GOPs, as described further below.

[0058] Forming a New GOP After a Scene Change

[0059] In accordance with another aspect of the present invention, when a scene change frame is detected, some or all of the bits accumulated in the bit bank as well as any allocated bits remaining are used to encode the remaining frames of the GOP. Furthermore, a new GOP is formed.

[0060] Since a B frame is encoded after a P frame and the scene change frame does not affect the video quality of an I frame, scene change detection is performed only for P frames. Thus, in accordance with the present invention, when a P frame of a current GOP is detected to include a scene change—resulting in flag Scene_change parameter to be set to 1—the P frame and the rest of the frames in the current GOP form a new GOP. Therefore, the P frame of the current GOP is changed to an I frame in the new GOP. The total number of frames in the new GOP is equal to (N_(p)+N_(b)), where N_(p) and N_(b) are the number of P and B frames left in the current GOP respectively. The parameters N_(p) and N_(b) are updated to indicate the number of P frames and B frames of the new GOP.

[0061]FIG. 1A is a diagram showing the frames of a GOP 10. GOP 10 is shown as having 12 frames, namely one I frame, eighth B frames and two P frames. The seventh frame of GOP 10, P frame 12 is assumed to contain a scene change. Accordingly, a new GOP 40 whose I frame 16 is the same as the P frame 12 of GOP 10 is formed, as shown in FIG. 1B. GOP 40 also includes the remaining unencoded frames of GOP 10, which are collectively shown to in FIGS. 1A and 1B with reference numeral 14.

[0062] Coding a frame after the scene-change frame as a duplicated frame

[0063] Since a scene change frame is not detected until the P frame containing the scene change is substantially encoded, re-encoding this P frame as an I frame may create difficulties for the associated hardware. To overcome this problem, in addition to changing the P frame of the current GOP to an I frame in the new GOP, the frame to be displayed after the I frame of the new GOP is also changed to be identical to (i.e., to be a duplicate of) the scene change P frame of the current GOP. In this manner, all macro blocks of this duplicate frame are encoded in the skipped mode thus enabling the encoded bits to be pre-computed and stored in a memory. Because encoding of this duplicate skipped frame requires relatively shorter time, any time so saved may be used for encoding the I frame of the new GOP. As known to those skilled in the art, an I-frame often typically requires more bits to encode than a P frame.

[0064]FIG. 2A illustrates an exemplary GOP 60 formed after detection of a scene change and prior to formation of a duplicate frame, as described above. As seen from FIG. 2A, I_(new) is the I frame of GOP 60. Frames shown in FIG. 2A are in encoding order and not in display order. Frames B₇ and B₈ are displayed before frame I_(new) and frame P₁₀ is displayed after frame I_(new). Therefore, frame P₁₀ is changed to a duplicate of frame I_(new). GOP 70, shown in FIG. 2B shows the frames of GOP 60 after frame P₁₀ is changed to a duplicate of frame I_(new).

[0065] After forming a new GOP and after changing the frame that is to be displayed after the scene change frame to a duplicate of the scene change frame, the remaining number of bits R is calculated as follows: if (Scene_change!=0) { tmp = (4+2N_(p)+(N_(b)−1)) × ux; sdiff = R-tmp; R = tmp; SavedBits += sdiff, }

[0066] Parameters sdff and SavedBits may have negative values. However, If SavedBits is negative, the new GOP borrows bits from a future GOP.

[0067] Minimal Bits Size Unit

[0068] The minimal bits size unit, ux, used in equation (4.1) above, is defined as follows:

ux=R/(c _(i) +c _(p) N _(p) +c _(h) N _(h))  (5.1)

[0069] In equation (5.1), R is the total number of bits allocated for encoding the frames of a GOP as defined in equations (1.5) and (1.6), and N_(p) and N_(b) are the number of P frames and B frames in the GOP, respectively. Parameters c_(i), c_(p) and C_(b) represent the relative number of bits required in encoding I, P and B frames and have the respective default values of 4, 2 and 1.

[0070] As seen from equation (5.1), in accordance with one aspect of the present invention, ux and thus, for example, parameter BankLimit (see equation (4.1)), are directly related to the bit rate R. Therefore, if R increases ux increases and if R decreases ux decreases. Moreover, to the extent that ux and thus, for example, parameter BankLin7it, are also related (i.e., inversely) to parameters c_(i), c_(p), c_(b), N_(p) and N_(b), ux is a weighted function of the number of bits adapted to encode I, B and P frame types.

[0071] In accordance with these default values, an I frame is adapted to use twice as many iix bits as a P frame and four times as many ux bits as a B frame. The above default values may be modified as more statistics about the number of bits required to encode each frame types of previous GOPs are collected.

[0072] Improved Target Bits

[0073] There may be instances where the target bit, as defined by the TM₅ standard and shown in equation (2.3) above, may be too large, thereby wasting bits. To prevent this, maximum target limitations are set for T_(itm5), T_(ptm5) and T_(btm5) as shown below:

If (T _(itm5) >M _(i) ux)T _(itm5) =M _(i) ×ux

If (T _(ptm5) >M _(p) ×ux)T _(ptm5) =M _(i) ×ux

[0074] If (T _(btm5) >M _(b) ×ux)T _(htm5) =M _(b) ×ux

[0075] Furthermore, the minimum target bit size T_(min) is set equal to ux. Therefore, in accordance with one aspect of the present invention, a lower limit and an upper limit is set for each of the T_(itm5), T_(ptm5) nad T_(btm5) and T_(btm5) parameters. In some embodiments M_(t), M_(p) and M_(b) are respectively set to 6, 5 and 4.

[0076] Improved Frame Level Rate Control

[0077] In accordance with one aspect of the present invention, enhanced global complexity measures X_(i), X_(p) and X_(b) are provided to improve the frame level rate control. These enhanced global complexity measures X_(i), X_(p) and X_(b) which are defined below, are for example, adapted for encoding Video sequence in accordance with the MPEG-4 standard.

^(X) _(i)=(cx _(i)×bit_rate)+0.5

X _(p)=(cx _(p) ×bit_rate)+0.5

X _(b)=(cx _(b) ×bit_rate)+0.5  (6.1)

[0078] Parameters cx_(i), cx_(p) and cx_(b) are related to the complexity measurement values associated with frames types I, B and P respectively. Therefore, each of the frame types I, P and B has a different weight assigned to its associated global complexity measure before it is encoded. In other words, for example, global complexity measure X_(i) is defined by a parameter (i.e., cx_(i)) that is different from the parameter defining enhanced global complexity measure X_(p), etc.

[0079] As seen from equation (6.1), as the complexity of a frame X_(i,p,b) increases, so does the frame's associated parameter cx_(i,p,b). For example, if the complexity of an I-frame increases, parameter cx_(i) associated with that I-frame also increases. Consequently, in accordance with this aspect of the present invention, for example, as the size or complexity of a sequence of video frames changes, the number of bits used to encode these video frame is modified to accommodate these changes. In one embodiment, cx_(i), cx_(p) and cx_(b) are respectively set to 190/115, 70/115 and 52/115, however, these values change as more data on how the previous frames were encoded are gathered.

[0080] Improved Reaction Parameter

[0081] The reaction parameter r as defined by the TM₅ standard (see equation 2.2 above) is not related to the resolution. This may (1) degrade the video quality when small resolutions are used and (2) lead to bit rate target missing. Therefore, in accordance with one aspect of the present invention, a new parameter mr is defined as shown below:

mr=2×bit_rate/(3500×MB_cnt)

[0082] where MB_cnt is the number of macro blocks disposed in the frame. The reaction parameter r, in turn, is dependent on parameter mr as shown by the following equation:

r=2×mr×bit_rate/picture_rate

[0083] As the size of a frame increases, the number of macro blocks in the frame and thus the frame resolution increases. Accordingly, because parameter mr is dependent on the frame resolution (i.e., via parameter MB_cnt ), the reaction parameter r is also dependent on the frame resolution and, further, on the bit rate.

[0084] Improved Virtual Buffer Fullness

[0085] The initial buffer fullness parameters d^(i) ₀, d^(p) ₀ and d^(P) ₀ defined by the TM₅ standard are reset to their default values (see equations (2.5) above) if they become zero. This may lead to degradation of the video quality. To rectify this problem, in accordance with one aspect of the present invention, initial buffer fullness parameters d^(i) ₀, d^(p) ₀ and d^(b) ₀ (collectively referred to hereinbelow as d^(i,pb) ₀) are defined as below:

if(d ^(ipb) ₀<0)

d ^(i,pb) ₀ =avg _(—) qp×r/31

[0086] In other words a non-negative lower limit is set for d^(i,pb) ₀. Therefore, if any of the initial buffer fullness parameters becomes negative, it is set to {fraction (1/31)} of the product of the average quantization parameters for all the macro blocks in the P frame and the reaction parameter. To the extent that the reaction parameter r is dependent on the frame resolution, as described above, d^(i,pb) ₀ is also dependent on the frame resolution.

[0087] Moreover, to ensure that d^(i,pb) ₀ does not become relatively too large—which may slow down the convergence of the rate control—an upper limit of r is set for d^(i,p,b) ₀, as shown below:

If(d^(i,pb) ₀>r)

d ^(i,pb) ₀ =r

[0088] Therefore, in accordance with this aspect of the present invention, each initial buffer fullness parameters d^(i,pb) ₀ is defined by an upper limit, a lower limit and its associated frame resolution.

[0089] Improved Quantization Parameter

[0090] As seen from equation (3.5), the rate control as defined by the TM₅ only uses the normalized (spatial) activity measurement N_act_(j) to adjust the quantization parameter mquant_(j) for the j-th macro block. This may result in motion artifacts (e.g., blocking effects) in the regions which are not adequately motion compensated. To reduce these artifacts, in accordance with one aspect of the present invention, the summed absolute difference (SAD) calculated in the motion estimation for the j-th macro block is used to adjust the value of mquant_(j) for the P and B frames, as shown below when the macro block is inter-coded: if (SAD!=0) { If (SAD > sad_up || SAD < sad_low) mquant_(j) = mquant_(j) × (q_sad_thrd/SAD), (7.1) }

[0091] Therefore, in accordance with (7.1), if SAD is between sad_up and sad_low, the quantization parameter mquant_(j) is modified. If, on the other hand, SAD is greater than sad_up or smaller than sad_low, SAD is not modified; sad_up, sad_low and q_sad_thrd are initialized for the entire video sequence. In one embodiment, sad_up is between 1600 and 1800, sad_low is between 300 and 200 and q_sad_thrd is between 1600 and 1800 and mquant_(j) is between 1 and 31.

[0092] The above embodiments of the present invention are illustrative and not limitative. For example, the invention is not limited by the programmable threshold value above which allocated bits are accumulated in the bit bank. The invention is not limited by the method or system used to keep track of the number of bits accumulated in the bit bank. For example, in some embodiments a counter keeps track of the number of accumulated bits. The invention is not limited by the type of hardware or software adapted to perform the above inventions. Furthermore, it is understood that the above inventions may be performed by either software modules, hardware modules or a combination of both. Other variations, modifications, additions, deletions, and equivalents will be apparent to a person skilled in the art and are intended to fall within the scope of the appended claims. 

What is claimed is:
 1. A method for encoding a video sequence having disposed therein a plurality of frames, the method comprising: allocating a number of bits for encoding each of the plurality of frames disposed in the video sequence; selecting a first threshold value; accumulating a plurality of bits defined by a difference between the allocated number of bits for at least one of the plurality of frames and the first threshold value; and encoding another one of the plurality of frames using at least a portion of the accumulated bits.
 2. The method of claim 1 wherein the plurality of frames is representative of a group of pictures (GOP), wherein said GOP comprises at least one frame selected from a group consisting of I-frame, P-frame, and B-frame.
 3. The method of claim 1 wherein the at least a portion of the accumulated bits are used when a number of bits required to encode the other one of the plurality of frames exceeds the first threshold value.
 4. The method of claim 1 wherein the other one of the plurality of frames is a scene change frame.
 5. The method of claim 2 further comprising: maintaining the stored plurality of bits at a level equal to a second threshold value.
 6. The method of claim 1 wherein the first threshold value is selected in accordance with the at least one of the plurality of frames.
 7. The method of claim 2 further comprising: receiving a second GOP; and encoding at least one of the frames of the second GOP using the bits accumulated from the frames of the first GOP.
 8. The method of claim 1 wherein a count of the accumulated bits is maintained in a counter.
 9. The method of claim 2 further comprising: determining whether a P frame of the GOP includes a scene change; forming a second GOP that includes the P frame and unencoded frames of the first GOP; encoding the scene change P frame of the first GOP as an I frame in the second GOP.
 10. The method of claim 9 further comprising: changing a frame that is to be displayed after the I frame of the second GOP to a duplicate of the I frame of the second GOP.
 11. The method of claim 5 wherein said second threshold value is related to a variable that is defined by a total number of bits allocated for the frames of the GOP.
 12. The method of claim 11 wherein said variable is further defined by a weighted function of relative number of bits used to encode each of I, P and B frames of the GOP.
 13. A system adapted to encode a video sequence having disposed therein a plurality of frames, the system comprising: a module adapted to allocate a number of bits for encoding each of the plurality of frames disposed in the video sequence; a module adapted to accumulate a plurality of bits defined by a difference between the allocated number of bits for at least one of the plurality of frames and a first threshold value; and a module adapted to encode another one of the plurality of frames using at least a portion of the accumulated bits.
 14. The system of claim 13 wherein the plurality of frames is representative of a group of pictures (GOP), wherein said GOP comprises at least one frame selected from a group consisting of I-frame, P-frame, and B-frame.
 15. The system of claim 13 wherein the at least a portion of the accumulated bits are used when a number of bits required to encode the other one of the plurality of frames exceeds the first threshold value.
 16. The method of claim 13 wherein the other one of the plurality of frames is a scene change frame.
 17. The system of claim 13 further comprising: a module adapted to maintain the stored plurality of bits at a level equal to a second threshold value.
 18. The system of claim 13 wherein the first threshold value is selected in accordance with the at least one of the plurality of frames.
 19. The system of claim 14 further comprising: a module adapted to encode at least one frame of a second GOP using the bits accumulated from the frames of the first GOP.
 20. The system of claim 13 wherein each of said modules is one of a software module and a hardware module.
 21. The system of claim 13 wherein each of said modules includes both software and hardware modules.
 22. The system of claim 13 further comprising a counter adapted to maintain a count of the accumulated bits.
 23. The system of claim 14 further comprising: a module adapted to determine whether a P frame of the GOP includes a scene change; a module adapted to form a second GOP that includes the P frame and unencoded frames of the first GOP; and a module adapted to encode the scene change P frame of the first GOP as an I frame in the second GOP.
 24. The system of claim 23 further comprising: a module adapted to change a frame that is to be displayed after the I frame of the second GOP to a duplicate of the I frame of the second GOP.
 25. A method for encoding a group of pictures (GOP) having I, P and B frames, the method comprising: establishing an upper limit for number of bits adapted to be used in encoding the I frame of the GOP; establishing a lower limit for number of bits adapted to be used in encoding the I frame of the GOP; and encoding the I frame of the GOP using a number of bits that is between the established upper and lower limits.
 26. The method of claim 25 further comprising: establishing an upper limit for number of bits adapted to be used in encoding, the P frames of the GOP; establishing a lower limit for number of bits adapted to be used in encoding the P frames of the GOP; and encoding the P frames of the GOP using a number of bits that is between the established upper and lower limits.
 27. The method of claim 26 further comprising: establishing an upper limit for number of bits adapted to be used in encoding the B frames of the GOP; establishing a lower limit for number of bits adapted to be used in encoding the B frames of the GOP; and encoding the B frames of the GOP using a number of bits that is between the established upper and lower limits.
 28. The method of claim 27 wherein the established upper limits for each of the I, P and B frames is related to a variable that is defined by a total number of bits allocated for encoding the I, P and B frames of the GOP.
 29. The method of claim 28 wherein said variable is defined by a weighted function of relative number of bits used for encoding each of the I, P and B frames of the GOP.
 30. A method comprising: receiving a group of pictures (GOP) having disposed therein I, P and B frames; associating a first variable defining a global complexity measure corresponding to the I frame of the GOP; encoding the I frame in accordance with the first variable; associating a second variable defining a global complexity measure corresponding to the P frame of the GOP; encoding the P frame in accordance with the second variable; associating a third variable defining a global complexity measure corresponding to the B frame of the GOP; and encoding the B frame in accordance with the third variable;
 31. The method of claim 30 wherein the first, second and third variables increase in value as the global complexity measures corresponding respectively to the 1, P and B frames increase.
 32. A method comprising: receiving a group of picture (GOP) having disposed therein I, P and B frames; and encoding the I frames of the GOP in accordance with a first reaction parameter that is defined by the I frame resolution and a bit rate associated with the I frame.
 33. The method of claim 32 further comprising: encoding the B frames of the GOP in accordance with a second reaction parameter that is defined by the P frame resolution and a bit rate associated with the P frame.
 34. The method of claim 32 further comprising: encoding the B frames of the GOP in accordance with a second reaction parameter that is defined by the B frame resolution and a bit rate associated with the B frame.
 35. A method comprising: receiving a group of picture (GOP) having disposed therein I, P and B frames; establishing a first upper limit for a first initial buffer fullness targeted to be used in encoding the I frame of the GOP; establishing a first lower limit for the first initial buffer fullness targeted to be used in encoding the I frame of the GOP; and encoding the I frame of the GOP using a number of bits that is between the established upper and lower limits.
 36. The method of claim 35 further comprising: establishing a second upper limit for a second initial buffer fullness targeted to be used in encoding the P frame of the GOP; establishing a second lower limit for the second initial buffer fullness targeted to be used in encoding the P frame of the GOP; and encoding the P frame of the GOP using a number of bits that is between the established second upper and lower limits.
 37. The method of claim 36 further comprising: establishing a third upper limit for a third initial buffer fullness targeted to be used in encoding the B frame of the GOP; establishing a third lower limit for the third initial buffer fullness targeted to be used in encoding the B frame of the GOP; and encoding the B frame of the GOP using a number of bits that is between the established third upper and lower limits.
 38. A method comprising: receiving a group of picture (GOP) having disposed therein I, P and B frames; computing a summed absolute difference for a P frame of the GOP; establishing an upper limit and a lower limit; and modifying a quantization parameter associated with at least one macro block of the P frame if the computed summed absolute difference is between the established upper and lower limits.
 39. The method of claim 38 further comprising: computing a summed absolute difference for a B frame of the GOP; establishing a second upper limit and a second lower limit; and modifying a quantization parameter associated with at least one macro block of the B frame if the computed summed absolute difference for the B frame is between the established second upper and second lower limits.
 40. The method of claim 38 further comprising: not modifying the quantization parameter associated with the at least one macro block of the P frame if the computed summed absolute difference is greater than the established upper limit or is smaller than the established lower limit.
 41. The method of claim 39 further comprising: not modifying the quantization parameter associated with the at least one macro block of the B frame if the computed summed absolute difference for the B frame is greater than the established second upper limit or is smaller than the established second lower limit. 